# SVG转PNG
from svglib.svglib import svg2rlg
from reportlab.graphics import renderPM
from PIL import Image

import json
from country_codes import get_country_code
import pygal_maps_world.maps
from pygal.style import RotateStyle
from pygal.style import lighten

filename = 'population_json.json'
with open(filename) as f:
    pop_data = json.load(f)

# 人口数量
cc_population = {}
# 2016
for pop_dict in pop_data:
    if pop_dict['Year'] == 2016:
        country_name = pop_dict['Country Name']
        population = int(float(pop_dict['Value']))
        code = get_country_code(country_name)
        if code:
            cc_population[code] = population
    # else:
    #  print("ERROR - code "+country_name + ': ' + str(population))
cc_pops_1, cc_pops_2, cc_pops_3 = {}, {}, {}
for cc, pop in cc_population.items():
    if pop < 10000000:
        cc_pops_1[cc] = pop
    elif pop < 1000000000:
        cc_pops_2[cc] = pop
    else:
        cc_pops_3[cc] = pop
print(len(cc_pops_1), len(cc_pops_2), len(cc_pops_3))

wm = pygal_maps_world.maps.World()
wm.title = "World Population in 2016, by Country"
wm.add('0 - 10M', cc_pops_1)
wm.add('10M - 1BN', cc_pops_2)
wm.add('> 1BN', cc_pops_3)
wm.render_to_file("World_population.svg")

# SVG转png
drawing = svg2rlg('World_population.svg')
renderPM.drawToFile(drawing, 'World_population.png', fmt="PNG")
img = Image.open('World_population.png')
img.show()
